#ifndef TestTable_h
#define TestTable_h

#include <cppunit/extensions/HelperMacros.h>

class TableTest : public CPPUNIT_NS::TestFixture {
	private:
		CPPUNIT_TEST_SUITE( TableTest );
		CPPUNIT_TEST( testConstructor );
		CPPUNIT_TEST( testInsertColumn );
		CPPUNIT_TEST( testAppendEntry );
		CPPUNIT_TEST( testGetEntry );
		CPPUNIT_TEST( testGetColumnSize );
		CPPUNIT_TEST( testGetNumRows );
		CPPUNIT_TEST( testGetHeaders );
		CPPUNIT_TEST( testGetColumns );
		CPPUNIT_TEST( testGetColumn );
		CPPUNIT_TEST( testGetColumnItemCountMap );
		CPPUNIT_TEST( testDuplicateRow );
		CPPUNIT_TEST( testDeleteRow );
		CPPUNIT_TEST_SUITE_END();

	public:
		void setUp();
		void tearDown();
		/**
		 *	For visualization of the table
		 */
		void printTable(Table<std::string, int> table);
		Table<std::string, int>& createTableWith5RowsAB();
		// Tests the constructor
		void testConstructor();
		// Tests the insertColumn() function
		void testInsertColumn();
		// Tests the insertEntry() function
		void testAppendEntry();
		// Tests the getEntry() function
		void testGetEntry();
		// Tests the getColumnSize() function
		void testGetColumnSize();
		// Tests the getNumRows() function
		void testGetNumRows();
		// Tests the getHeaders() function
		void testGetHeaders();
		// Tests the getColumns() function
		void testGetColumns();
		// Tests the getColumn() function
		void testGetColumn();
		// Tests the getColumnItemCountMap() function
		void testGetColumnItemCountMap();
		// Tests the duplicateRow() function
		void testDuplicateRow();
		// Tests the deete() function
		void testDeleteRow();
};
#endif